package com.zeratul.common.satoken.domain.entity.base;

import com.zeratul.common.satoken.enums.UserType;
import lombok.Data;

/**
 * 登录用户信息的统一基类
 */
@Data
public abstract class LoginUserAdapter {

    /**
     * 获取登录ID
     */
    public String getLoginId() {
        return String.format("%s-%s", getUserId(), getUserType());
    }

    /**
     * 返回用户ID
     */
    public abstract String getUserId();

    /**
     * 返回用户类型
     */
    public abstract UserType getUserType();

    /**
     * 返回设备ID
     */
    public String getDeviceId() {
        return null;
    }

    /**
     * 返回设备类型
     */
    public String getDeviceType() {
        return null;
    }

    /**
     * 返回Token过期时间（单位：秒），默认采用全局过期时间，-1表示永不过期
     */
    public Long getTimeoutSec(){
        return null;
    }

    /**
     * 是否允许同一账号多地同时登录 （为 true 时允许一起登录, 为 false 时新登录挤掉旧登录）
     */
    public boolean getIsConcurrent(){
        return true;
    }
}
